package cube.data;

import java.util.Collections;
import java.util.LinkedList;
import java.util.List;

/**
 * 栈的链表实现
 * 
 * @author abiao
 */
public class Stack<E> {

	/**
	 * 链表
	 */
	protected LinkedList<E> link = new LinkedList<E>();

	/**
	 * 入栈操作
	 */
	public void put(E e) {
		link.addFirst(e);
	}

	/**
	 * 出栈操作
	 */
	public E top() {
		return link.removeFirst();
	}

	/**
	 * 栈高度
	 */
	public int size() {
		return link.size();
	}

	/**
	 * 清空
	 */
	public void clear() {
		link.clear();
	}

	/**
	 * 检查栈是否为空
	 */
	public boolean empty() {
		return link.isEmpty();
	}

	/**
	 * 获取此栈的只读视图
	 */
	public List<E> getList() {
		return Collections.unmodifiableList(link);
	}
}
